[INV-BACKEND-032] Создать метод DeductInventoryFIFO(DeductRequest)

Реализация низкоуровневого алгоритма каскадного FIFO-вычета

Author

Services Task & Simulation Framework Documentation

Published

July 13, 2026

NoteКраткая карточка задачи

  • Инструкция по шагам:
    1. На Шаге 2: Принять от смежных оркестраторов готовки (cook-service) идентификатор продукта и требуемый к списанию вес. Открыть SQL-транзакцию.
    2. Выполнить запрос к PostgreSQL Fridge DB для получения списка всех открытых упаковок/партий данного товара пользователя, принудительно отсортировав их по времени зачисления: ORDER BY created_at ASC.
    3. На Шаге 4: Запустить цикл каскадного вычитания (FIFO Strategy). Если вес первой (самой старой) партии полностью покрывает расход — уменьшить её значение через UPDATE и прервать цикл. Если не покрывает — полностью обнулить/удалить текущую строку (DELETE) и перенести остаток дефицита на следующую по дате партию.
    4. В случае успешного завершения зафиксировать транзакцию, асинхронно отправить в Kafka-топик bpds.pma.out.process.event пакет с event_type: "FIFO_SPENT" и вернуть gRPC-ответ.